Skip to content

BUG: Fix Import DREAM3D Memory Usage #1341

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

mmarineBlueQuartz
Copy link
Collaborator

Broke up importing DREAM3D files into two stages so that only DataObjects requested are fully imported. Other data is imported using empty data stores to serve as placeholders. Geometries will always import the corresponding arrays completely during preflight due to other filters using those arrays during their calculations.

Added ability to import HDF5 dataset as an AbstractDataStore with or without predetermined tuple and component shapes. This will use the appropriate type of data store based on the required memory size and user preferences. Reading as a vector would not work when using out-of-core data.

@mmarineBlueQuartz mmarineBlueQuartz force-pushed the feature/1273_NeighborListIO branch from d322f2c to d5ffed0 Compare June 24, 2025 17:06
@imikejackson
Copy link
Contributor

@mmarineBlueQuartz Initial testing on a 75 GB .dream3d file allocated over 100GB of RAM just trying to add the "Read DREAm3D" filter to the pipeline. If you need this test file let me know and I can post it to Google Drive

@mmarineBlueQuartz mmarineBlueQuartz force-pushed the feature/1273_NeighborListIO branch 2 times, most recently from dac5542 to 178b42e Compare July 14, 2025 11:02
mmarineBlueQuartz and others added 10 commits July 15, 2025 10:54
* ImportH5ObjectPathsAction allocation improvements.
* EmptyListStore created for preflight and unimported NeighborLists.
* Allow StringArray to change its underlying store.
* Update HDF5 DataStructure IO to finish importing preflight DataObjects.
* Update DataStoreUtilities to create arbitrary AbstractListStores based on memory usage.
* Update Dream3dIO to finish importing DataObjects from DREAM3D files.
* Update DatasetIO to read values as an AbstractDataStore.

Updates BlueQuartzSoftware#1312
Updates BlueQuartzSoftware#1273
* Import Legacy DREAM3D file always imports geometry arrays as if running in execute.
* Fixing importing DREAM3D data so that data importing can be delayed until running execute.
* Fixed PartitionGeometryTest
* Fixed importing Legacy DREAM.3D files.
* Fixed importing current DREAM.3D files for filters that require data during preflight and updated DataStructureReader for partially imported data.
* added additional readAsDataStore method for DatasetIO with specific tuple and component dimensions.
* Commented out ImportH5ObjectPathsAction errors related to partial data imports as they are no longer viable with the rework.
Geometries only add required data ID if using empty data stores
LaplacianSmoothing now checks if the TriangleGeom has a vertex geometry before accessing it.
@mmarineBlueQuartz mmarineBlueQuartz force-pushed the feature/1273_NeighborListIO branch from 178b42e to b703c3c Compare July 15, 2025 15:33
Preflighting the Read DREAM3D filter creates EmptyDataStores.
* Fix error messages.
* Simplify DataArrayIO BoolArray check.
* Fix FinishImporting methods for legacy DREAM.3D geometries
@mmarineBlueQuartz mmarineBlueQuartz merged commit cd599f3 into BlueQuartzSoftware:develop Jul 17, 2025
7 checks passed
@mmarineBlueQuartz mmarineBlueQuartz deleted the feature/1273_NeighborListIO branch July 17, 2025 15:33
nyoungbq pushed a commit to nyoungbq/simplnx that referenced this pull request Jul 18, 2025
* Broke up importing DREAM3D files into two stages so that only DataObjects requested are fully imported. Other data is imported using empty data stores to serve as placeholders. Geometries will always import the corresponding arrays completely during preflight due to other filters using those arrays during their calculations.
* Added ability to import HDF5 dataset as an AbstractDataStore with or without predetermined tuple and component shapes. This will use the appropriate type of data store based on the required memory size and user preferences. Reading as a vector would not work when using out-of-core data.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants